#ifndef OPERATOR_HPP
#define OPERATOR_HPP

//------------------------------------------------------------------------------
// Fichier d'entête utilisés
//------------------------------------------------------------------------------

namespace ImageAnalysis
{
//----------------------------------------------------------------------
// Cette classe est une classe abstraite dont toutes les classes
// de type opérateur dérivent. Cette classe redéfinit l'opérateur 
// parenthèse.
//----------------------------------------------------------------------
class Operator
{
public:
    //----------------------------------------------------------------------
    // Structure
    //----------------------------------------------------------------------

    //----------------------------------------------------------------------
    // Constructeur
    //----------------------------------------------------------------------
    Operator( );

	//----------------------------------------------------------------------
    // Destructeur
    //----------------------------------------------------------------------
    virtual ~Operator();

	//----------------------------------------------------------------------
    //
    //----------------------------------------------------------------------
	virtual void Process( )=0;

private:
        //----------------------------------------------------------------------
        // Constructeur par copie et oprérateur d'affectation en privée pour
        // interdire leur utilisation
        //----------------------------------------------------------------------
        Operator( const Operator& copy);
        Operator& operator=( const Operator& copy );
};

}

#endif //OPERATOR_HPP
